package spring.webapp.anmeldesystem.service;

import java.util.List;

import spring.webapp.anmeldesystem.entity.Admin;
import spring.webapp.anmeldesystem.entity.Professor;
import spring.webapp.anmeldesystem.entity.Student;
import spring.webapp.anmeldesystem.entity.User;

/**
 * @author Songhua Cui
 */
public interface AdminService {
	/**
	 * @param Student
	 */
	void addStudent(Student Student);

	/**
	 * @param string
	 */
	void addProfessor(Professor Professor);

	/**
	 * @param Professor
	 */
	void updateProfessor(Professor Professor);

	/**
	 * @param Student
	 */
	void updateStudent(Student Student);

	/**
	 * @param Student
	 */
	void resetStudent(Student Student);

	/**
	 * @param Professor
	 */
	void resetProfessor(Professor Professor);

	/**
	 * @param password
	 */
	void addPassword(long id);

	/**
	 * @param password
	 */
	void resetPassword(long id);

	/**
	 * 
	 * @param email
	 * @return {@link Admin}.
	 */
	Admin getAdminInformation(String email);

	/**
	 * 
	 * @return a list of {@link User}s contains {@link Admin}, {@link Professor}
	 *         and {@link Student}.
	 */
	public List<User> getAllUsers();

	public List<User> getUserByEmail(String email);

	void deleteUser(String email);

	void resetPassword(String email);

	String addNewUser(String role, String name, String faculity);

	String updatePassword(String email, String oldPassword, String newPassowrd);
}